home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 August: Tool Chest / Dev.CD Aug 94.toast / Sample Code / Newton Sample Code 1.1 / Communications / IRSample-1 / IRSample.text < prev    next >
Encoding:
Text File  |  1994-03-04  |  8.0 KB  |  315 lines  |  [TEXT/MPS ]

  1. // default constants
  2. constant kAppSymbol := '|IR Sample:PIEDTS|;
  3. constant kAppName := "IR Sample";
  4.  
  5. // no install or removescripts in this application
  6. // ---- End Project Data ----
  7.  
  8.  
  9. // ---- File Main.t ----
  10. IRSample :=
  11.    {title: "IR Sample",
  12.     viewBounds: {top: 0, left: 0, right: 240, bottom: 336},
  13.     InitConnection:
  14.       func(passive)
  15.       begin
  16.          SetValue(StatusArea,'text, "Connecting...\n");
  17.          RefreshViews();
  18.       
  19.          ep := {_proto: baseEndpoint, _parent: self};    // make a RAM copy so we can modify it
  20.       
  21.          local err := ep:Instantiate(ep, nil);
  22.       
  23.          if err then
  24.             begin
  25.                :Notify(kNotifyAlert, EnsureInternal("IR Sample"), EnsureInternal("Sorry, can't open AppleTalk!"));
  26.                SetValue(StatusArea, 'text, "Unable to initialize...");
  27.                return;
  28.             end;
  29.       
  30.          if passive then
  31.             err := ep:Listen(nil);
  32.          else
  33.             err := ep:Connect(nil, nil);
  34.       
  35.          if err then
  36.             begin
  37.                :Notify(kNotifyAlert, EnsureInternal("IR Sample"), EnsureInternal("Couldn't connect..." & NumberStr(err)));
  38.                :PutDataInStatusArea("Unable to connect...");
  39.                return;
  40.             end;
  41.       
  42.          ep.myBase := _parent;
  43.       
  44.          if passive then
  45.             :ReadyToReceive();
  46.          else
  47.             :ReadyToSend();
  48.       
  49.          :PutDataInStatusArea("Connected, Waiting for Disconnect...");
  50.       
  51.          connected := true;
  52.       end,
  53.     ReleaseConnection:
  54.       func()
  55.       begin
  56.           if (connected) then
  57.               begin
  58.               ep.nextInputSpec := nil;             // no more input
  59.               ep:SetInputSpec(nil);                // kill the current inputSpec
  60.               ep:Abort();                          // asynchronously abort any pending I/O
  61.       
  62.               // must use a delayed action to dispose
  63.               AddDelayedAction(DisposeConnection, [], 500);
  64.               end;
  65.       end,
  66.     PutDataInStatusArea:
  67.       func(s)
  68.       begin
  69.          SetValue(StatusArea, 'text, s);
  70.       end,
  71.     PutDataInReceivedArea:
  72.       func(s)
  73.       begin
  74.          SetValue(ReceivedArea, 'text, s);
  75.       end,
  76.     viewSetupDoneScript:
  77.       func()
  78.       begin
  79.          ActiveConnection := 0;
  80.          ActiveListenConnection := 0;
  81.       end,
  82.     SendDataInSendField:
  83.       func()
  84.       begin
  85.          ep:Output(SendDataField.entryLine.text, kFrame + kMore);         // frame data, not eom
  86.          ep:Output(unicodeCR, kFrame);                                    // frame data, eom
  87.          :ReadyToReceive(); 
  88.       end,
  89.     Connected: nil,
  90.     baseEndpoint:
  91.       {
  92.             _proto: protoEndpoint,
  93.       
  94.             configOptions: [ { label: kCMSSlowIR, type: 'service, opCode: opSetRequired }, ],
  95.       
  96.          myBase: nil,
  97.       
  98.          exceptionHandler: func(exception)
  99.             begin
  100.                if (exception.data <> -16005 and exception.data <> -38001) then
  101.                    GetRoot():Notify(kNotifyAlert, EnsureInternal("IR Sample"), EnsureInternal("Exception: " & exception.data));
  102.                return true;
  103.             end,
  104.       
  105.          doInput:
  106.             {
  107.             inputForm: 'string,
  108.             endCharacter: unicodeCR,
  109.                recvFlags: kFrame,
  110.             discardAfter: 200,
  111.        
  112.             InputScript: func(endpoint, s)
  113.                begin
  114.                   endpoint.nextInputSpec := nil;   // we have finished receiving
  115.                   endpoint:PutDataInStatusArea("Data Received...");
  116.                   endpoint:PutDataInReceivedArea(s);
  117.                   endpoint:ReadyToSend();
  118.                end,
  119.             },
  120.       },
  121.     ep: nil,
  122.     DisposeConnection:
  123.       func()
  124.       begin
  125.           ep:Disconnect();
  126.           ep:Dispose();
  127.           connected := nil;
  128.           :PutDataInStatusArea("Ready to connect...");
  129.       end,
  130.     ReadyToSend:
  131.       func()
  132.       begin
  133.          SendButton:Show();
  134.          :PutDataInStatusArea("ready to send...");
  135.       end,
  136.     ReadyToReceive:
  137.       func()
  138.       begin
  139.          SendButton:Hide();                  // can't send while waiting to receive
  140.          ep:SetInputSpec(ep.doInput);        // set up first inputSpec only for listener
  141.          :PutDataInStatusArea("waiting for data...");
  142.       end,
  143.     viewSetupFormScript:
  144.       func()
  145.       begin
  146.       end,
  147.     _proto: protoApp,
  148.     debug: "IRSample"
  149.    };
  150.  
  151. _view000 := /* child of IRSample */
  152.    {viewFlags: 1,
  153.     viewFormat: 304,
  154.     viewBounds: {left: 11, top: 219, right: 233, bottom: 297},
  155.     viewclass: 74
  156.    };
  157.  
  158.  
  159.  
  160. StatusArea := /* child of IRSample */
  161.    {text: "",
  162.     viewBounds: {left: 10, top: 26, right: 232, bottom: 64},
  163.     viewJustify: 0,
  164.     viewFormat: 67436880,
  165.     _proto: protoStaticText,
  166.     debug: "StatusArea"
  167.    };
  168. // View StatusArea is declared to IRSample
  169.  
  170.  
  171.  
  172. ReceivedArea := /* child of IRSample */
  173.    {text: "",
  174.     viewBounds: {left: 10, top: 82, right: 232, bottom: 176},
  175.     viewJustify: 0,
  176.     viewFormat: 67436880,
  177.     _proto: protoStaticText,
  178.     debug: "ReceivedArea"
  179.    };
  180. // View ReceivedArea is declared to IRSample
  181.  
  182.  
  183.  
  184. Status := /* child of IRSample */
  185.    {text: "Status",
  186.     viewBounds: {left: 18, top: 18, right: 114, bottom: 34},
  187.     viewTransferMode: 0
  188.     ,
  189.     _proto: protoStaticText,
  190.     debug: "Status"
  191.    };
  192.  
  193.  
  194.  
  195. Received := /* child of IRSample */
  196.    {text: "Received Data",
  197.     viewBounds: {left: 18, top: 74, right: 114, bottom: 90},
  198.     viewTransferMode: 0
  199.     ,
  200.     _proto: protoStaticText,
  201.     debug: "Received"
  202.    };
  203.  
  204.  
  205.  
  206. Connect := /* child of IRSample */
  207.    {text: "Connect",
  208.     buttonClickScript:
  209.       func()
  210.       begin
  211.           if not connected then
  212.               :InitConnection(nil);        // active mode
  213.           else
  214.               :Notify(kNotifyAlert, EnsureInternal("IR Sample"), EnsureInternal("already connected!"));
  215.       end,
  216.     viewBounds: {left: 12, top: 188, right: 75, bottom: 205},
  217.     viewSetupDoneScript:
  218.       func()
  219.       begin
  220.          :PutDataInStatusArea("Ready to Connect...");
  221.       end,
  222.     _proto: protoTextButton,
  223.     debug: "Connect"
  224.    };
  225. // View Connect is declared to IRSample
  226.  
  227.  
  228.  
  229. Disconnect := /* child of IRSample */
  230.    {text: "Disconnect",
  231.     buttonClickScript:
  232.       func()
  233.       begin
  234.           if connected then
  235.               begin
  236.               :PutDataInStatusArea("Disconnecting...");
  237.               :ReleaseConnection();
  238.               end;
  239.           else
  240.               :Notify(kNotifyAlert, EnsureInternal("IR Sample"), EnsureInternal("not connected!"));
  241.       end,
  242.     viewBounds: {left: 162, top: 188, right: 233, bottom: 205},
  243.     viewQuitScript:
  244.       func()
  245.       begin
  246.          :ReleaseConnection();
  247.       end,
  248.     _proto: protoTextButton,
  249.     debug: "Disconnect"
  250.    };
  251. // View Disconnect is declared to IRSample
  252.  
  253.  
  254.  
  255. SendDataField := /* child of IRSample */
  256.    {viewBounds: {top: 226, left: 18, right: 226, bottom: 290},
  257.     viewFormat: 256,
  258.     viewlinespacing: 16,
  259.     label: "Data:",
  260.     textSetup:
  261.       func()
  262.       begin
  263.          return "this is a test";
  264.       end,
  265.     indent: 80,
  266.     _proto: protoLabelInputLine,
  267.     debug: "SendDataField"
  268.    };
  269. // View SendDataField is declared to IRSample
  270.  
  271.  
  272.  
  273. SendButton := /* child of IRSample */
  274.    {text: "Send",
  275.     buttonClickScript:
  276.       func()
  277.       begin
  278.           if connected then
  279.               :SendDataInSendField();
  280.           else
  281.               :Notify(kNotifyAlert, EnsureInternal("IR Sample"), EnsureInternal("not connected!"));
  282.       end,
  283.     viewBounds: {left: 76, top: 308, right: 176, bottom: 328},
  284.     _proto: protoTextButton,
  285.     debug: "SendButton"
  286.    };
  287. // View SendButton is declared to IRSample
  288.  
  289.  
  290.  
  291. Listen := /* child of IRSample */
  292.    {text: "Listen",
  293.     buttonClickScript:
  294.       func()
  295.       begin
  296.           if not connected then
  297.               :InitConnection(true);    // passive mode
  298.           else
  299.               :Notify(kNotifyAlert, EnsureInternal("IR Sample"), EnsureInternal("already connected!"));
  300.       end,
  301.     viewBounds: {left: 86, top: 188, right: 149, bottom: 205},
  302.     _proto: protoTextButton,
  303.     debug: "Listen"
  304.    };
  305. // View Listen is declared to IRSample
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313. // ---- Beginning of section for non used Layout files ----
  314.  
  315. // End of output